/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package TP6;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author augusto
 */
public class TableModel_Vector extends AbstractTableModel {

    private String[] columnNames = {"Evento", "Reloj", "RND_llegadaCliente", "tiempo_llegadaCliente",
        "prox_llegadaCliente", "cola_Cliente", "EstadoServidor", "RND_FinAtencionCliente",
        "tiempoFinAtencionCliente", "RND_TipoGaseosa", "tipoGaseosa", "RND_SiSeVa",
        "SIseVA", "RND_tipoGaseosaAlternativa",
        "tipoGaseosaAlternativa", "RND_EmpateStock", "EmpatateStock", "StockActualA",
        "StockActualB", "StockActualC", "StockInicialA", "StockInicialB", "StockInicialC",
        "RND_llegadaRepositorio", "llegadaRepositorio", "proximaLlegadaRepositorio",
        "EstadoRepositor", "FinReposicion", "ContadorCambiosA",
        "ContadorCambiosB", "ContadorCambiosC", "ContadorCantidadReposicion",
        "CantPersonasQueSeFueronSinGaseosa", "CantPersonasQueNoConsiguieronGaseosaDeseada",
        "CantPersonasAtendidas","Rnd_DiscoLleno","porcentaje_Disco_Lleno","Proximo_Disco_Lleno"};
    private String[][] data;

    TableModel_Vector() {
    }

    @Override
    public int getColumnCount() {
        return columnNames.length;
    }

    @Override
    public int getRowCount() {
        return data.length;
    }

    @Override
    public String getColumnName(int col) {
        return columnNames[col];
    }

    @Override
    public String getValueAt(int row, int col) {
        return data[row][col];
    }

    @Override
    public Class getColumnClass(int c) {
        return String.class;
        //        return getValueAt(0, c).getClass();
    }

    public void setValue(String value, Columnas columna, int index) {
        int indexColumn = 0;
        for (int j = 0; j < columnNames.length; j++) {
            if (columnNames[j].equals(columna.name())) {
                indexColumn = j;
            }
        }
        data[index][indexColumn] = value;

    }

    public void cargarData(ArrayList<VectorEstado> imprimibleSimulacion) {
        data = new String[imprimibleSimulacion.size()][columnNames.length];
        for (int i = 0; i < imprimibleSimulacion.size(); i++) {
            data[i][0] = imprimibleSimulacion.get(i).getEvento().name();
            data[i][1] = imprimibleSimulacion.get(i).getReloj() + "";

            if (imprimibleSimulacion.get(i).getRndLlegadaCliente() != 1) {
                data[i][2] = imprimibleSimulacion.get(i).getRndLlegadaCliente() + "";
            }
            data[i][3] = "" + (imprimibleSimulacion.get(i).getTiempoEntreLlegadasCliente());
            data[i][4] = "" + imprimibleSimulacion.get(i).getProximaLlegadaCliente();
            data[i][5] = "" + (imprimibleSimulacion.get(i).getTamanoColaClientes()-1);
            data[i][6] = "" + imprimibleSimulacion.get(i).getExpendedor().getEstado().name();
            if (imprimibleSimulacion.get(i).getRndFinAtencionCliente() != 1) {
                data[i][7] = "" + imprimibleSimulacion.get(i).getRndFinAtencionCliente();
            }

            data[i][8] = "" + imprimibleSimulacion.get(i).getFinAtencion();

            if (imprimibleSimulacion.get(i).getRndTipoGaseosa() != 1) {
                data[i][9] = "" + imprimibleSimulacion.get(i).getRndTipoGaseosa();
                data[i][10] = "" + imprimibleSimulacion.get(i).getGaseosaElegida();

            }

            if (imprimibleSimulacion.get(i).getRndSeVa() != 1) {
                data[i][11] = "" + imprimibleSimulacion.get(i).getRndSeVa();
                data[i][12] = "" + imprimibleSimulacion.get(i).getSiSeVa();
   
            }
         
            if (imprimibleSimulacion.get(i).getRndGaseosaAlternativa() != 1) {
                data[i][13] = "" + imprimibleSimulacion.get(i).getRndGaseosaAlternativa();
            }
            data[i][14] = "" + imprimibleSimulacion.get(i).getGaseosaAlternativa();
            
            if (imprimibleSimulacion.get(i).getRndRomperEmpates() != 1) {
                data[i][15] = "" + imprimibleSimulacion.get(i).getRndRomperEmpates();
                }
            data[i][16] = "" + imprimibleSimulacion.get(i).getEmpateStock();
            
            data[i][17] = "" + imprimibleSimulacion.get(i).getExpendedor().getStockA();
            data[i][18] = "" + imprimibleSimulacion.get(i).getExpendedor().getStockB();
            data[i][19] = "" + imprimibleSimulacion.get(i).getExpendedor().getStockC();
            data[i][20] = "" + imprimibleSimulacion.get(i).getExpendedor().getStockInicialA();
            data[i][21] = "" + imprimibleSimulacion.get(i).getExpendedor().getStockInicialB();
            data[i][22] = "" + imprimibleSimulacion.get(i).getExpendedor().getStockInicialC();
           
            if (imprimibleSimulacion.get(i).getRndLlegadaRepositor() != 1) {
            data[i][23] = "" + imprimibleSimulacion.get(i).getRndLlegadaRepositor();
            data[i][24] = "" + imprimibleSimulacion.get(i).getTiempoEntreLlegadasRepositor();
            }
            
            data[i][25] = "" + imprimibleSimulacion.get(i).getProximaLlegadaRepositor();
            data[i][26] = "" + imprimibleSimulacion.get(i).getEstadoRepositor();
            data[i][27] = "" + imprimibleSimulacion.get(i).getFinReposicion();
            data[i][28] = "" + imprimibleSimulacion.get(i).getContadorDeCambiosA();
            data[i][29] = "" + imprimibleSimulacion.get(i).getContadorDeCambiosB();
            data[i][30] = "" + imprimibleSimulacion.get(i).getContadorDeCambiosC();
            data[i][31] = "" + imprimibleSimulacion.get(i).getContadorDeReposiciones();
            data[i][32] = "" + imprimibleSimulacion.get(i).getContadorPersonasNoConsiguieronGaseosaYseFueron();
            data[i][33] = "" + imprimibleSimulacion.get(i).getContadorPersonasNoConsiguieronGaseosaDeseada();
            data[i][34] = "" + imprimibleSimulacion.get(i).getContadorPersonasAtendidas();
            
            if(imprimibleSimulacion.get(i).getRndDiscoLleno()!=1){
            data[i][35] = "" + imprimibleSimulacion.get(i).getRndDiscoLleno();
            data[i][36] = "" + imprimibleSimulacion.get(i).getPorcentajeDiscoLleno();
           }
            data[i][37] = "" + imprimibleSimulacion.get(i).getProximoLlenadoDisco();
            
        }
    }

    public enum Columnas {

        Evento, Reloj, RND_llegadaCliente,
        tiempo_llegadaCliente, prox_llegadaCliente,
        cola_Cliente, EstadoServidor, RND_FinAtencionCliente,
        tiempoFinAtencionCliente, RND_TipoGaseosa,
        tipoGaseosa, RND_SiSeVa, SIseVA,
        RND_tipoGaseosaAlternativa, tipoGaseosaAlternativa,
        RND_EmpateStock, EmpatateStock,
        StockActualA, StockActualB, StockActualC,
        StockInicialA, StockInicialB, StockInicialC,
        RND_llegadaRepositorio, llegadaRepositorio, proximaLlegadaRepositorio,
        EstadoRepositor, FinReposicion,
        ContadorCambiosA, ContadorCambiosB, ContadorCambiosC,
        ContadorCantidadReposicion,
        CantPersonasQueSeFueronSinGaseosa,
        CantPersonasQueNoConsiguieronGaseosaDeseada,
        CantPersonasAtendidas,
        Rnd_DiscoLleno,porcentaje_Disco_Lleno,Proximo_Disco_Lleno
    }
}
